package day13.api;

import java.io.File;
import java.util.Scanner;

//测试  求文件夹总大小
public class Test1_Digui {
    public static void main(String[] args) {
        //1,接收用户输入的 文件夹  路径
        String dirpath = new Scanner(System.in).nextLine();
        //2,把指定文件 封装成File对象
        File dir = new File(dirpath);
        //3,调用方法求大小
        long count = totalSize(dir);
        System.out.println("文件夹路径是:"+dirpath+".总大小是:" + count);
    }
    //创建方法,求大小
    public static long totalSize(File dir) {
//        1,把文件夹里的资源都列出来 listFiles()
        File[] fs = dir.listFiles();
        long sum = 0 ;//定义变量,记录总和
        //遍历数组,获取每个资源fs[i]
        for (int i = 0; i < fs.length ; i++) {
            if( fs[i].isFile() ){
    //        2,判断,资源是文件吗?--是就求和
                sum = sum + fs[i].length() ;
            }else if( fs[i].isDirectory() ){
//        3,判断,资源是文件夹吗?
//--继续列资源继续判断是文件就求和是文件夹再去列资源再判断再求和 --重复的执行 1 2 3
      //递归 -- 就是方法里自己调用自己的现象 --节省代码的编写 -- 比较占内存
                sum = sum + totalSize( fs[i] ) ;
            }
        }
        return sum ;//把计算完的结果返回给调用位置
    }
}
